"""
WSGI config for travel project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/
"""

import os
# 从 Django 框架的核心模块（django.core）下的 wsgi 子模块中导入 get_wsgi_application 函数。
# 这个函数在 Django 的 WSGI 配置里起着核心作用，它负责获取一个符合 WSGI 规范的应用可调用对象，
# 该对象能够与外部的 WSGI 服务器进行交互，接收服务器传递过来的请求信息，并将经过 Django 处理后的响应返回给服务器，
# 进而由服务器发送回客户端，完成整个 HTTP 请求的处理流程。
from django.core.wsgi import get_wsgi_application
# 设置 Django 项目的配置模块环境变量。os.environ 本质上是一个类似字典的数据结构，代表了系统的环境变量集合，
# 而 setdefault 方法会首先检查指定的环境变量（在这里就是 DANGO_SETTINGS_MODULE）是否已经存在，如果不存在，
# 就会将其设置为给定的值（即 'travel.settings'）。
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'travel.settings')
# 调用 get_wsgi_application 函数来获取符合 WSGI 规范的应用可调用对象，并将其赋值给名为 application 的变量。按照 WSGI 的规范要求，
# 外部的 WSGI 服务器在启动并加载 Django 项目时，会去查找名为 application 的这个可调用对象，然后基于它与 Django 项目建立通信连接，
# 将接收到的来自客户端的网络请求传递给 Django 进行处理，并且再将 Django 处理完成后生成的响应传递回服务器端，最终由服务器发送回客户端。
# 简单来说，这个 application 变量所指向的对象就是 Django 项目与外部 WSGI 服务器之间交互的关键接口，只有正确配置了这个接口，
# 整个 Web 应用才能够顺利地在支持 WSGI 的服务器上运行起来，并对外提供相应的服务。
application = get_wsgi_application()
